Merhaba arkadaşlar,
Mobilhanem.com sitemizden anlattığımız/yayınladığımız Temel Java Derslerine bu dersimizde diziler ile foreach döngüsü kullanımı ile devam ediyoruz. Bir önceki dersimiz de tek boyutlu dizilere giriş yapmıştık ve dizi nasıl tanımlanır, nasıl değer atanır ve değerler nasıl okunur açıklamaya çalışmıştık.
Bu dersimizde ise diziler ile döngülerin kullanımından , özelliklede foreach döngüsünden bahsedeceğiz. Biz önceki derslerimizde döngü kullanımını anlatmıştık ve örnekler vermiştik. Döngü kullanımı hakkında dersimizi buradan ulaşabilirsiniz. Bu dersimiz de diziler ile kullanımından bahsedeceğiz. Aslında javada foreach adında bir döngü çeşidi bulunmamaktadır. Foreach döngüsü c#, php gibi dillerde kullanılmaktadır. Ama for döngüsünün diziler ile birlikte normal for döngüsünden farklı yapıda kullanılmasına foreach adı verilmektedir.
Öncelikle bir dizinin uzunluğu nasıl alınır onu inceleyelim.
Diziler length kullanımı:
Bir dizi oluşturulduğu an dizinin uzunluğu length değişkenine atanır. Aşağıdaki örnek ile daha net bir şekilde anlayacağız.
int[] sayi = new int[10]; System.out.println(sayi.length); Konsol Çıktısı: 10
Gördüğünüz gibi sayi adında uzunluğu 10 olan bir dizi tanımladık ve biz bu diziyi oluşturur oluşturmaz o diziye ait bir length değişkenine o dizinin uzunluğu atanıyor. Ve biz istediğimiz zaman diziReferans.length şeklinde dizinin uzunluğunu öğrenebiliriz. Aşağıda bir örnek daha veriyorum.
int [] sayi = {100,200,300,400,500,600,700,800,900,1000}; System.out.println(sayi.length); Konsol Çıktısı: 10
Diziler for döngüsü kullanımı:
Dersimiz forach döngüsü kullanımı , ancak dizilerin for döngüsü ile kullandımdan da bahsetmemiz gerekiyor. Anlatımı örnekler üzerinden yapacağım. Gelelim örnek kullanımlara:
Dizinin tüm elemanlarına 1-100 arasında random değerler atama.
int [] sayi = new int[10];//uzunluğu 10 olan diziyi oluşturduk for (int i = 0; i < sayi.length ; i++) { sayi[i] = (int)(Math.random()*100); //tek tek değer atıyoruz }
Atadığımız bu değerleri ekrana yazdıralım:
for (int i = 0; i < sayi.length ; i++) { System.out.println(sayi[i]); // Tüm değerleri tek tek yazdırıyoruz }
Şimdi küçük bir örnekle for döngüsünü pekiştirelim.
Örnek: Uzunluğu 100 olan int bir diziye önce 1-999 arasında random değerler atayalım. Sonra atadığımız bu değerler arasında en büyük olan sayıyı ve o sayının dizideki index’ini bulalım.
public class MaxSayi { public static void main(String args[]){ int [] sayi = new int[100]; //Uzunluğu 100 olan diziyi oluşturduk for (int i = 0; i < sayi.length ; i++) { sayi[i] = (int)(Math.random()*1000); //Tüm elemanlarına 0-999 arasında değerler atıyoruz } int index = 0; //başlangıç değerleri int max = 0; //başlangıç değerleri for (int i = 0; i < sayi.length ; i++) { if(sayi[i] > max){ //max sayıdan büyük ise max = sayi[i]; //max sayı değiştiriliyor index = i; //ve index alınıyor } } System.out.println("En büyük sayı: "+max+" index: "+index); } }
Diziler foreach döngüsü kullanımı:
Yazının başında da belirttiğim gibi aslında Java’da foreach adında bir döngü çeşidi bulunmamaktadır. Foreach , C#, Php, Javascript gibi dillerde kullanılmaktadır. Java’da ise for içinde( ancak bu dersimize kadar kullandığımız for yapısından farklı bir şekilde )kullanılmaktadır. Yine nasıl kullanıldığını örnekler üzerinden anlatacağım.
Dizi değerlerini okuma:
public class ForeachDongu { public static void main(String args[]){ int [] sayilar = {100,200,300,400,500,600,700,800,900,1000}; //dizi tanımlanıyor for (int sayi : sayilar) { //sayılar dizisinin değeri tek tek sayi değişkenine atanıyor System.out.print(sayi+" ");//Yan yana yazdırmak için .println yerine .print kullandık } } } Konsol Çıktısı: 100 200 300 400 500 600 700 800 900 1000
Gördüğünüz gibi normal for döngüsünden farkı index’i ile ilgilenmeden tüm değerlerine ulaşabiliyoruz. Bu foreach döngüsü dizinin uzunluğu kadar dönecektir ve her seferinde bir sonraki değeri int sayi’ya atıyacaktır. Foreach kullanarak genel olarak dizinin tüm değerlerini okuyabiliriz fakat değer atamak için foreach kullanmayız. Değer atamak için normal for döngüsü kullanabiliriz.
Yukarıdaki örneğe çok benzer bir örnek verelim.
public class ForeachDongu { public static void main(String args[]){ String[] meyveler = new String[] { "Portakal", "Elma", "Armut", "Çilek" }; for (String meyve : meyveler) { System.out.print(meyve+" "); } } } Konsol Çıktısı: Portakal Elma Armut Çilek
Örnek: Uzunluğu 100 olan int bir diziye önce 1-999 arasında random değerler atayalım. Sonra atadığımız bu değerler arasında en büyük olan sayıyı bulalım. En büyük sayıyı bulma işlemini foreach ile yapalım.
public class MaxSayi { public static void main(String args[]){ int [] sayilar = new int[100]; //Uzunluğu 100 olan diziyi oluşturduk for (int i = 0; i < sayilar.length ; i++) { //Değer ataması için for kullanıyoruz sayilar[i] = (int)(Math.random()*1000); //Tüm elemanlarına 0-999 arasında değerler atıyoruz } int max = 0; //başlangıç değerleri for (int sayi : sayilar) { //Değerleri okumak için foreach if(sayi > max){ //max sayıdan büyük ise max = sayi; //max sayı değiştiriliyor } } System.out.println("En büyük sayı: "+max); } } Konsol Çıktısı: En büyük sayı: 994
Bu dersimde anlatmak istediklerim bu kadar. Böylelikle dizilerle işlem yapma aşamasına gelmiş bulunmaktayız. Bir sonraki dersimde dizilerde search (arama) işlemlerini nasıl yapacağız anlatmaya çalışacağım.
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Temel Java Dersleri için tıklayınız..
106
iyi günler iyi çalışmalar
acaba bu kodda for içindeki length komutunda ne tür bir sıkıntı var
“almak[i]” aslında bir “int” değere eş değer. senin length ini almak istediğin değişken “almak” değişkeni. yani kodu “almak.length” olarak değiştirirsen problem kalmaz.
Son kodunuz yorum satırının içine girmiş
Maximum ve Minumum sayıyı bulma;
import java.util.*;
public class ornek2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int sayi[] = new int[100];
for (int i=0; i<sayi.length;i++) {
sayi[i]=(int)(Math.random()*999);
}
int maxsayi = 0;
int minsayi = 1000;
int maxindex = 0;
int minindex = 0;
for(int i=0; i<sayi.length;i++) {
if (maxsayisayi[i]) {
minsayi=sayi[i];
minindex=i;
}
}
System.out.println(“Dizideki maksimum sayı : ” + maxsayi +” ve indeksi :” + maxindex);
System.out.println(“Dizideki minimum sayı : ” + minsayi +” ve indeksi :” + minindex);
}
}
int minsayi = 1000;
Değerini verdim; sıfır verince sürekli minsayi sıfır oluyor ve her çalışmada mutlaka 0 index 0 değerini buluyor.